﻿using Magicodes.ExporterAndImporter.Core;
using Magicodes.ExporterAndImporter.Excel;
namespace Robotec.NET.Application;

    /// <summary>
    /// 页面配置明细输出参数
    /// </summary>
    public class SysPageOptionConfigColumnDto
    {
        /// <summary>
        /// 列描述
        /// </summary>
        public string? label { get; set; }
        
        /// <summary>
        /// 列宽
        /// </summary>
        public int? width { get; set; }
        
        /// <summary>
        /// 隐藏列
        /// </summary>
        public bool? hide { get; set; }
        
        /// <summary>
        /// 是否是搜索框
        /// </summary>
        public bool? search { get; set; }
        
        /// <summary>
        /// 禁用
        /// </summary>
        public bool? disabled { get; set; }
        
        /// <summary>
        ///  列表中可编辑
        /// </summary>
        public bool? cell { get; set; }
        
        /// <summary>
        /// 搜索框宽度
        /// </summary>
        public int? searchLabelWidth { get; set; }
        
        /// <summary>
        /// 位置排序，数字越大位置越靠前
        /// </summary>
        public int? order { get; set; }
        
        /// <summary>
        /// 编辑隐藏
        /// </summary>
        public bool? display { get; set; }
        
        /// <summary>
        ///  列内容超出隐藏
        /// </summary>
        public bool? overHidden { get; set; }
        
        /// <summary>
        /// 固定列
        /// </summary>
        public bool? fixed_ { get; set; }
        
        /// <summary>
        /// 排序
        /// </summary>
        public bool? sortable { get; set; }
        
        /// <summary>
        /// 编辑/新增表单列数
        /// </summary>
        public int? span { get; set; }
        
        /// <summary>
        /// 标题提示语
        /// </summary>
        public string? labelTip { get; set; }
        
        /// <summary>
        /// 新增时是否显示
        /// </summary>
        public bool? addDisplay { get; set; }
        
        /// <summary>
        /// 编辑时是否显示
        /// </summary>
        public bool? editDisplay { get; set; }
        
        /// <summary>
        /// 显示字数限制
        /// </summary>
        public bool? showWordLimit { get; set; }
        
        /// <summary>
        /// Id
        /// </summary>
        public long Id { get; set; }
        
        /// <summary>
        /// 路由路径
        /// </summary>
        public string? configPath { get; set; }
        
        /// <summary>
        /// 列字段名
        /// </summary>
        public string? prop { get; set; }
        
        /// <summary>
        /// 参与自定义列显隐
        /// </summary>
        public bool? showColumn { get; set; }
        
        /// <summary>
        /// 数据字典拉取地址
        /// </summary>
        public string? dicUrl { get; set; }
        
    [SugarColumn(IsJson =true)]
    public List<KeyValue> props { get; set; } 
    [SugarColumn(IsJson =true)]
    public List<KeyValue> dicData { get; set; } 
        /// <summary>
        /// 类型
        /// </summary>
        public string? type { get; set; }
        
        /// <summary>
        /// 过滤条件显示列
        /// </summary>
        public bool? filterable { get; set; }
        
        /// <summary>
        /// 是否开启虚拟Dom模式
        /// </summary>
        public bool? virtualize { get; set; }
        
        /// <summary>
        /// 是否为远程搜索
        /// </summary>
        public bool? remote { get; set; }
        
        /// <summary>
        /// 下拉框是否多选
        /// </summary>
        public bool? multiple { get; set; }
        
        /// <summary>
        /// 最大允许选择个数
        /// </summary>
        public int? limit { get; set; }
        
        /// <summary>
        /// 文本最大输入长度
        /// </summary>
        public int? maxlength { get; set; }
        
    [SugarColumn(IsJson =true)]
    public List<KeyValue> rules { get; set; } 
        /// <summary>
        /// 默认值
        /// </summary>
        public string? value { get; set; }
        
        /// <summary>
        /// 是否日期区间
        /// </summary>
        public bool? searchRange { get; set; }
        
        /// <summary>
        ///  数据字典接口url携带请求参数
        /// </summary>
        public string? dicQuery { get; set; }
        
        /// <summary>
        /// 数据字典接口请求方式
        /// </summary>
        public string? dicMethod { get; set; }
        
        /// <summary>
        /// 数据字典接口url返回数据格式化方法
        /// </summary>
        public string? dicFormatter { get; set; }
        
        /// <summary>
        /// 详情时是否显示
        /// </summary>
        public bool? viewDisplay { get; set; }
        
        /// <summary>
        /// 添加的时候不能修改
        /// </summary>
        public bool? addDisabled { get; set; }
        
        /// <summary>
        /// 编辑的时候不能修改
        /// </summary>
        public bool? editDisabled { get; set; }
        
        /// <summary>
        /// select选择框匹配
        /// </summary>
        public bool? searchFilterable { get; set; }
        
        /// <summary>
        /// 组件名称
        /// </summary>
        public string? component { get; set; }
        
        /// <summary>
        /// 修改样式名称
        /// </summary>
        public string? className { get; set; }
        
        /// <summary>
        /// 级联选择器:可以选择任意一级
        /// </summary>
        public bool? checkStrictly { get; set; }
        
        /// <summary>
        /// 级联选择器:可以选择任意一级(在搜索框中起作用)
        /// </summary>
        public bool? searchCheckStrictly { get; set; }
        
        /// <summary>
        /// 级联菜单展示所有层级
        /// </summary>
        public bool? show_all_levels { get; set; }
        
    }

    
  /// <summary>
    /// 页面配置明细导出导入
    /// </summary>
    [ExcelExporter(Name = "页面配置明细", TableStyle = OfficeOpenXml.Table.TableStyles.None, AutoFitAllColumn = true,AutoCenter =true)]
    [ExcelImporter( IsLabelingError = true,SheetName ="页面配置明细")]
    public class ExportImportSysPageOptionConfigColumnDto
    {
        /// <summary>
        /// 列描述
        /// </summary>
        [ExporterHeader(DisplayName = "列描述", IsBold = true)]
        [ImporterHeader(Name = "列描述")]
        public string? label { get; set; }
        
        /// <summary>
        /// 列宽
        /// </summary>
        [ExporterHeader(DisplayName = "列宽", IsBold = true)]
        [ImporterHeader(Name = "列宽")]
        public int? width { get; set; }
        
        /// <summary>
        /// 隐藏列
        /// </summary>
        [ExporterHeader(DisplayName = "隐藏列", IsBold = true)]
        [ImporterHeader(Name = "隐藏列")]
        public bool? hide { get; set; }
        
        /// <summary>
        /// 是否是搜索框
        /// </summary>
        [ExporterHeader(DisplayName = "是否是搜索框", IsBold = true)]
        [ImporterHeader(Name = "是否是搜索框")]
        public bool? search { get; set; }
        
        /// <summary>
        /// 禁用
        /// </summary>
        [ExporterHeader(DisplayName = "禁用", IsBold = true)]
        [ImporterHeader(Name = "禁用")]
        public bool? disabled { get; set; }
        
        /// <summary>
        ///  列表中可编辑
        /// </summary>
        [ExporterHeader(DisplayName = " 列表中可编辑", IsBold = true)]
        [ImporterHeader(Name = " 列表中可编辑")]
        public bool? cell { get; set; }
        
        /// <summary>
        /// 搜索框宽度
        /// </summary>
        [ExporterHeader(DisplayName = "搜索框宽度", IsBold = true)]
        [ImporterHeader(Name = "搜索框宽度")]
        public int? searchLabelWidth { get; set; }
        
        /// <summary>
        /// 位置排序，数字越大位置越靠前
        /// </summary>
        [ExporterHeader(DisplayName = "位置排序，数字越大位置越靠前", IsBold = true)]
        [ImporterHeader(Name = "位置排序，数字越大位置越靠前")]
        public int? order { get; set; }
        
        /// <summary>
        /// 编辑隐藏
        /// </summary>
        [ExporterHeader(DisplayName = "编辑隐藏", IsBold = true)]
        [ImporterHeader(Name = "编辑隐藏")]
        public bool? display { get; set; }
        
        /// <summary>
        ///  列内容超出隐藏
        /// </summary>
        [ExporterHeader(DisplayName = " 列内容超出隐藏", IsBold = true)]
        [ImporterHeader(Name = " 列内容超出隐藏")]
        public bool? overHidden { get; set; }
        
        /// <summary>
        /// 固定列
        /// </summary>
        [ExporterHeader(DisplayName = "固定列", IsBold = true)]
        [ImporterHeader(Name = "固定列")]
        public bool? fixed_ { get; set; }
        
        /// <summary>
        /// 排序
        /// </summary>
        [ExporterHeader(DisplayName = "排序", IsBold = true)]
        [ImporterHeader(Name = "排序")]
        public bool? sortable { get; set; }
        
        /// <summary>
        /// 编辑/新增表单列数
        /// </summary>
        [ExporterHeader(DisplayName = "编辑/新增表单列数", IsBold = true)]
        [ImporterHeader(Name = "编辑/新增表单列数")]
        public int? span { get; set; }
        
        /// <summary>
        /// 标题提示语
        /// </summary>
        [ExporterHeader(DisplayName = "标题提示语", IsBold = true)]
        [ImporterHeader(Name = "标题提示语")]
        public string? labelTip { get; set; }
        
        /// <summary>
        /// 新增时是否显示
        /// </summary>
        [ExporterHeader(DisplayName = "新增时是否显示", IsBold = true)]
        [ImporterHeader(Name = "新增时是否显示")]
        public bool? addDisplay { get; set; }
        
        /// <summary>
        /// 编辑时是否显示
        /// </summary>
        [ExporterHeader(DisplayName = "编辑时是否显示", IsBold = true)]
        [ImporterHeader(Name = "编辑时是否显示")]
        public bool? editDisplay { get; set; }
        
        /// <summary>
        /// 显示字数限制
        /// </summary>
        [ExporterHeader(DisplayName = "显示字数限制", IsBold = true)]
        [ImporterHeader(Name = "显示字数限制")]
        public bool? showWordLimit { get; set; }
        
        /// <summary>
        /// 路由路径
        /// </summary>
        [ExporterHeader(DisplayName = "路由路径", IsBold = true)]
        [ImporterHeader(Name = "路由路径")]
        public string? configPath { get; set; }
        
        /// <summary>
        /// 列字段名
        /// </summary>
        [ExporterHeader(DisplayName = "列字段名", IsBold = true)]
        [ImporterHeader(Name = "列字段名")]
        public string? prop { get; set; }
        
        /// <summary>
        /// 参与自定义列显隐
        /// </summary>
        [ExporterHeader(DisplayName = "参与自定义列显隐", IsBold = true)]
        [ImporterHeader(Name = "参与自定义列显隐")]
        public bool? showColumn { get; set; }
        
        /// <summary>
        /// 数据字典拉取地址
        /// </summary>
        [ExporterHeader(DisplayName = "数据字典拉取地址", IsBold = true)]
        [ImporterHeader(Name = "数据字典拉取地址")]
        public string? dicUrl { get; set; }
        
        /// <summary>
        /// 数据字典
        /// </summary>
         [ExporterHeader(DisplayName = "数据字典", IsBold = true)]
        [ImporterHeader(Name = "数据字典")]
        [SugarColumn(IsJson =true)]
        public List<KeyValue> props { get; set; }
        
        /// <summary>
        /// 数据字典的值
        /// </summary>
         [ExporterHeader(DisplayName = "数据字典的值", IsBold = true)]
        [ImporterHeader(Name = "数据字典的值")]
        [SugarColumn(IsJson =true)]
        public List<KeyValue> dicData { get; set; }
        
        /// <summary>
        /// 类型
        /// </summary>
        [ExporterHeader(DisplayName = "类型", IsBold = true)]
        [ImporterHeader(Name = "类型")]
        public string? type { get; set; }
        
        /// <summary>
        /// 过滤条件显示列
        /// </summary>
        [ExporterHeader(DisplayName = "过滤条件显示列", IsBold = true)]
        [ImporterHeader(Name = "过滤条件显示列")]
        public bool? filterable { get; set; }
        
        /// <summary>
        /// 是否开启虚拟Dom模式
        /// </summary>
        [ExporterHeader(DisplayName = "是否开启虚拟Dom模式", IsBold = true)]
        [ImporterHeader(Name = "是否开启虚拟Dom模式")]
        public bool? virtualize { get; set; }
        
        /// <summary>
        /// 是否为远程搜索
        /// </summary>
        [ExporterHeader(DisplayName = "是否为远程搜索", IsBold = true)]
        [ImporterHeader(Name = "是否为远程搜索")]
        public bool? remote { get; set; }
        
        /// <summary>
        /// 下拉框是否多选
        /// </summary>
        [ExporterHeader(DisplayName = "下拉框是否多选", IsBold = true)]
        [ImporterHeader(Name = "下拉框是否多选")]
        public bool? multiple { get; set; }
        
        /// <summary>
        /// 最大允许选择个数
        /// </summary>
        [ExporterHeader(DisplayName = "最大允许选择个数", IsBold = true)]
        [ImporterHeader(Name = "最大允许选择个数")]
        public int? limit { get; set; }
        
        /// <summary>
        /// 文本最大输入长度
        /// </summary>
        [ExporterHeader(DisplayName = "文本最大输入长度", IsBold = true)]
        [ImporterHeader(Name = "文本最大输入长度")]
        public int? maxlength { get; set; }
        
        /// <summary>
        /// 提交验证
        /// </summary>
         [ExporterHeader(DisplayName = "提交验证", IsBold = true)]
        [ImporterHeader(Name = "提交验证")]
        [SugarColumn(IsJson =true)]
        public List<KeyValue> rules { get; set; }
        
        /// <summary>
        /// 默认值
        /// </summary>
        [ExporterHeader(DisplayName = "默认值", IsBold = true)]
        [ImporterHeader(Name = "默认值")]
        public string? value { get; set; }
        
        /// <summary>
        /// 是否日期区间
        /// </summary>
        [ExporterHeader(DisplayName = "是否日期区间", IsBold = true)]
        [ImporterHeader(Name = "是否日期区间")]
        public bool? searchRange { get; set; }
        
        /// <summary>
        ///  数据字典接口url携带请求参数
        /// </summary>
        [ExporterHeader(DisplayName = " 数据字典接口url携带请求参数", IsBold = true)]
        [ImporterHeader(Name = " 数据字典接口url携带请求参数")]
        public string? dicQuery { get; set; }
        
        /// <summary>
        /// 数据字典接口请求方式
        /// </summary>
        [ExporterHeader(DisplayName = "数据字典接口请求方式", IsBold = true)]
        [ImporterHeader(Name = "数据字典接口请求方式")]
        public string? dicMethod { get; set; }
        
        /// <summary>
        /// 数据字典接口url返回数据格式化方法
        /// </summary>
        [ExporterHeader(DisplayName = "数据字典接口url返回数据格式化方法", IsBold = true)]
        [ImporterHeader(Name = "数据字典接口url返回数据格式化方法")]
        public string? dicFormatter { get; set; }
        
        /// <summary>
        /// 详情时是否显示
        /// </summary>
        [ExporterHeader(DisplayName = "详情时是否显示", IsBold = true)]
        [ImporterHeader(Name = "详情时是否显示")]
        public bool? viewDisplay { get; set; }
        
        /// <summary>
        /// 添加的时候不能修改
        /// </summary>
        [ExporterHeader(DisplayName = "添加的时候不能修改", IsBold = true)]
        [ImporterHeader(Name = "添加的时候不能修改")]
        public bool? addDisabled { get; set; }
        
        /// <summary>
        /// 编辑的时候不能修改
        /// </summary>
        [ExporterHeader(DisplayName = "编辑的时候不能修改", IsBold = true)]
        [ImporterHeader(Name = "编辑的时候不能修改")]
        public bool? editDisabled { get; set; }
        
        /// <summary>
        /// select选择框匹配
        /// </summary>
        [ExporterHeader(DisplayName = "select选择框匹配", IsBold = true)]
        [ImporterHeader(Name = "select选择框匹配")]
        public bool? searchFilterable { get; set; }
        
        /// <summary>
        /// 组件名称
        /// </summary>
        [ExporterHeader(DisplayName = "组件名称", IsBold = true)]
        [ImporterHeader(Name = "组件名称")]
        public string? component { get; set; }
        
        /// <summary>
        /// 修改样式名称
        /// </summary>
        [ExporterHeader(DisplayName = "修改样式名称", IsBold = true)]
        [ImporterHeader(Name = "修改样式名称")]
        public string? className { get; set; }
        
        /// <summary>
        /// 级联选择器:可以选择任意一级
        /// </summary>
        [ExporterHeader(DisplayName = "级联选择器:可以选择任意一级", IsBold = true)]
        [ImporterHeader(Name = "级联选择器:可以选择任意一级")]
        public bool? checkStrictly { get; set; }
        
        /// <summary>
        /// 级联选择器:可以选择任意一级(在搜索框中起作用)
        /// </summary>
        [ExporterHeader(DisplayName = "级联选择器:可以选择任意一级(在搜索框中起作用)", IsBold = true)]
        [ImporterHeader(Name = "级联选择器:可以选择任意一级(在搜索框中起作用)")]
        public bool? searchCheckStrictly { get; set; }
        
        /// <summary>
        /// 级联菜单展示所有层级
        /// </summary>
        [ExporterHeader(DisplayName = "级联菜单展示所有层级", IsBold = true)]
        [ImporterHeader(Name = "级联菜单展示所有层级")]
        public bool? show_all_levels { get; set; }
        
    }